In J2EE, an HTTP session stores information about the user and the state of the user interaction. In addition to storing data collected from the user, the session also stores any data that may be cached from the database. Session information may be replicated in a clustered environment to provide high availability in the case of an application server failure. That is, the user session may be replicated in another server that is part of the cluster. As is known to those of ordinary skill in the art, while sessions can be replicated between servers in a clustered environment, replication can also be between a server and a database and another storage device. In such a case, a second server can pull appropriate information from the database or storage device in the case of a failure in the first application server.
In computers, clustering is the use of multiple computers, typically PCs or UNIX workstations, multiple storage devices, and redundant interconnections, to form what appears to users as a single highly available system. Cluster computing can be used for load balancing as well as for high availability. Advocates of clustering suggest that the approach can help an enterprise achieve 99.999 availability in some cases. One of the main ideas of cluster computing is that, to the outside world, the cluster appears to be a single system.
A common use of cluster computing is to load balance traffic on high-traffic Web sites. A Web page request is sent to a “manager” server, which then determines which of several identical or very similar Web servers to forward the request to for handling. Having a Web farm (as such a configuration is sometimes called) allows traffic to be handled more quickly.
Clustering has been available since the 1980s when it was used in DEC's VMS systems. IBM's sysplex is a cluster approach for a mainframe system. Microsoft, Sun Microsystems, and other leading hardware and software companies offer clustering packages that are said to offer scalability as well as availability. As traffic or availability assurance increases, all or some parts of the cluster can be increased in size or number. (See, HTTP://searchdatacenter.techtarget.com/sDefinition/0,,sid80_gci762034,00.html).
In clustering, the session state in one server is copied to one of the other servers in the cluster, or to a database or other storage device (depending upon the cluster configuration). The session data is copied whenever the session is modified. This is a replicated session. (See, HTTP://www.onjava.com/pub/a/onjava/2004/11/24/replication1.html)
However, if the application does not program the session objects correctly, the replication of the session to the backup server will not be proper and the application will not be able to failover gracefully (and with as little impact as possible on the user utilizing the application). To test an application for these errors, one must bring the web server down upon each page request as if a failover had occurred to check if the session information was correctly duplicated in the cluster as intended. Most applications have many screens so this is a very time-consuming process and, indeed, it sometimes becomes infeasible to manually test an application for proper functioning in the case of a failover.
In order to meet the challenges posed by the above changes it is necessary to create a system/method which has the ability to gather information to test web applications in a clustered environment.